package main

import (
	"encoding/json"
	"fmt"
)

type Mon struct {
	Name string `json:"name"`
	Age  int
	Bir  string
	Sal  float64
}

func main() {

	str := "{\"name\":\"as\",\"Age\":12,\"Bir\":\"2021-11-13\",\"Sal\":12.12}"
	var mon Mon
	// 结构体反序列化
	err := json.Unmarshal([]byte(str), &mon)
	if err != nil {
		fmt.Println("反序列化失败：", err)
	}
	fmt.Println(mon) // {as 12 2021-11-13 12.12}
	testMap()
	testSlice()
}

func testMap() {
	// 反序列化不需要make,
	var map1 map[string]interface{}
	str := "{\"age\":12,\"name\":\"zw\"}"
	err := json.Unmarshal([]byte(str), &map1)
	if err != nil {
		fmt.Println("反序列化失败：", err)
	}
	fmt.Println(map1)
}

func testSlice() {
	str := "[{\"age\":12,\"name\":\"zw\"}]"
	var slice1 []map[string]interface{}
	err := json.Unmarshal([]byte(str), &slice1)
	if err != nil {
		fmt.Println("反序列化失败：", err)
	}
	fmt.Println(slice1)
}
